﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace WebApplication1.Stock
{
    public partial class GestionStock : System.Web.UI.Page
    {
        const String connectionString = "server=FORMA1614;Database=magicrecettes;User ID=magicrecettes;Password=cook;Trusted_Connection=False";
        const String queryString = "SELECT IdIngredient, Nom, Unite FROM Ingredient";
        DataSet dataSetIngredients = new DataSet();

        protected void Page_Load(object sender, EventArgs e)
        {
            // Chargement de la DropDownList avec les Ingredients en BD
            // SqlConnection con = new SqlConnection(connectionString); ne semble pas nécessaire avec le dataAdapter
            
            using (SqlDataAdapter adapter = new SqlDataAdapter(queryString, connectionString))
            {
                /*
                 *  RESOURCE: Populating a DataSet from a DataAdapter:
                 *  MSDN: http://msdn.microsoft.com/en-us/library/bh8kx08z.aspx
                 */
                adapter.Fill(dataSetIngredients, "Ingredient");
            }// appel implicite, fait par le Using, au garbageCollector
            DropDownListIngredient.DataSource = dataSetIngredients.Tables["Ingredient"] ;
            DropDownListIngredient.DataTextField = "Nom";
            DropDownListIngredient.DataValueField = "IdIngredient";

            /* bind data from a source to a server control. This method is commonly used after retrieving a dataset through a database query.
             * Most controls perform data binding automatically, which means that you typically do not need to call this method explicitly.
             * This method is commonly overridden when you create a custom templated data-bound control.
             * SOURCE: MSDN http://msdn.microsoft.com/en-us/library/w5e5992d.aspx
             * REM: la DropDownList savait DEJA qu'elle utilisait le DataSet dataSetIngredients (cf. ligne précédente).
             * On peut se demander alors pourquoi il faut faire en core un DataBind(). Le DataBind() permet en fait un contrôle
             * plus fin: c'est un peu comme si, par la ligne précédente on connectait entre eux les tuyaux reliant DropDownList et DataSet, et que par le 
             * DataBind() on ouvrait alors la vanne. Ca peut servir dans ceratiens situation où un timer, p. ex., ou un condition 
             * doivent être utilisés pour rafraîchir le contrôle.
             */
            DropDownListIngredient.DataBind();
            
            
        }

        protected void DropDownListIngredient_TextChanged(object sender, EventArgs e)
        {
            LabelUnite.Text = "key";
        }

        protected void DropDownListIngredient_SelectedIndexChanged(object sender, EventArgs e)
        {
                //LabelUnite.Text = getCellOfDataSetAsString(dataSetIngredients, "Ingredient", "IdIngredient", DropDownListIngredient.SelectedItem.Value, "Unite");
                LabelUnite.Text = dataSetIngredients.Tables["Ingredient"].Rows[2]["Nom"].ToString();
        }

        protected string getCellOfDataSetAsString(DataSet dataSet, string table, string idColumnName, string id, string valueColumnName)
        {
            var myTable = dataSetIngredients.Tables["Ingredient"];
            foreach (DataRow row in myTable.Rows)
            {
                if ((string)(row["IdIngredient"].ToString()) == id)
                {
                    return row["Unite"].ToString();
                }
            }
            return null;  // Not found.
        }
        
    }
}